#ifndef _HH_OSD_H__
#define _HH_OSD_H__

#include <hi_type.h>
#include <hi_common.h>
#include <hi_comm_region.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include "loadbmp.h"
#include "enc_type.h"
#include <SDL.h>
#include <SDL_ttf.h>
#include "enc_shrm.h"
#include <time.h>

#define 	ENC_OSD_SUB_HANDLE			0
#define 	ENC_OSD_LOGO_HANDLE			1
#define 	ENC_OSD_QRC_HANDLE			2
#define 	ENC_OSD_SUB_ROLL_HANDLE		3
#define 	ENC_OSD_MAX_HANDLE			4

// OSD字幕显示  hcc add 20181210
typedef struct _enc_osd_sub_s
{
	U32 			sub_chn;				// OSD叠加的通道号
	RGN_HANDLE 		sub_handle;				// OSD叠加的句柄号
	U8				sub_content[ENC_OSD_SUB_LEN];
	//U8			sub_content[512];
	U8				sub_font_file[ENC_OSD_SUB_LEN];
	U8  			sub_font[ENC_OSD_FONTNAME_LEN];
	TTF_Font 		*p_sub_font;
	U32				sub_style;
	U32				sub_fontsize;
	U32				sub_alpha;
	SDL_Color		sub_font_fgcolor;		// 文字前景色
	SDL_Color		sub_font_bgcolor;		// 文字背景色
	U32 			sub_rgn_width;			// 图片的宽（4字节对其）
	U32 			sub_rgn_heigh;			// 图片的高（4字节对其）
	U32				sub_rgn_bgcolor;
	U32				sub_rgn_bgalpha;		// 区域背景透明度
	U32  			sub_x;   				// OSD字幕显示的位置坐标
	U32				sub_y;
	int				sub_font_width;			// 字幕文件的宽
	int				sub_font_height;
	U16				sub_movdir;
	U16				sub_movspeed;
	// reserve
	U32 			sub_start_time[ENC_OSD_MAX_TM_NUM];			// OSD 开始显示的时间戳	
	U32 			sub_end_time[ENC_OSD_MAX_TM_NUM];			// OSD 结束显示的时间戳
} enc_osd_sub;


// OSD图片显示
typedef struct _enc_osd_pic_s
{
	U32 		 	pic_chn;				// 字幕叠加通道
	RGN_HANDLE   	pic_handle;				// OSD 区域句柄
	char 		 	pic_name[256];			// OSD显示的文字内容
	U32 			pic_rgn_width;			// 图片的宽（4字节对其）
	U8				pic_num;
	U32 			pic_rgn_heigh;			// 图片的高（4字节对其）
	U32				pic_rgn_bgcolor;
	U32				pic_rgn_bgalpha;		// 区域背景透明度
	U32  			pic_x;   				// OSD字幕显示的位置坐标
	U32				pic_y;
	U32 			sub_start_time[ENC_OSD_MAX_TM_NUM];			// OSD 开始显示的时间戳	
	U32 			sub_end_time[ENC_OSD_MAX_TM_NUM];			// OSD 结束显示的时间戳
}enc_osd_pic;


void enc_osd_destory(HI_S32 chn, RGN_HANDLE handle);

void enc_osd_all_destory(void);

SDL_Surface* enc_osd_get_size(SDL_Surface *surface);

S32 enc_osd_loadbmp(const char *bmp_name, BITMAP_S *pstBitmap);

S32 enc_osd_draw_bmp(const char *bmp_name, RGN_HANDLE handle);

S32 enc_osd_init_rgn_chn(enc_osd_sub *sub, enc_osd_pic *pic);

SDL_Surface* enc_osd_get_size(SDL_Surface *surface, void *p_this, enc_osd_sub *osd_sub);

TTF_Font *open_ttf_file(char *font, int size);

void enc_osd_s_delay(int sec);

int enc_osd_get_bmp_name(char *font_bmp, char*font_show);

int enc_osd_sub_show(void *p_this);

int enc_osd_logo_show(void *p_this);

int enc_osd_qr_show(void *p_this);

void hienc_start_osd();

void hienc_stop_osd();

#endif



